package com.example.javaservice.security;

import io.jsonwebtoken.*;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;

public class JwtUtil {
    private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
    private static final long EXPIRATION_TIME = 1000 * 60 * 60; // 1小时

    /** 生成 Token */
    public static String generateToken(String username, String role) {
        return Jwts.builder()
                .setSubject(username)
                // ⚡ role 直接转大写
                .claim("role", role.toUpperCase())
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .signWith(key)
                .compact();
    }

    /** 解析 Token */
    public static Jws<Claims> parseToken(String token) {
        return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token);
    }

    /** 获取角色（已经是大写） */
    public static String getRole(String token) {
        return parseToken(token).getBody().get("role", String.class);
    }

    /** 获取用户名 */
    public static String getUsername(String token) {
        return parseToken(token).getBody().getSubject();
    }
}
